#include "stm32f10x.h"                  // Device header
#include "Delay.h"

//按键异常，不知为何

extern int flag;
uint8_t Key_Num;
void Key_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_8|GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStructure);
}
uint8_t Key_GetNum(void)
{
	uint8_t Temp;
	if(Key_Num)
	{
	Temp = Key_Num;
	Key_Num = 0;
	return Temp;
	}
	return 0;
}
uint8_t Key_GetState(void)
{
	if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)==0)
	{return 1;}//+
	else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)==0)
	{return 2;}//-
	else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==0)
	{return 3;}//×
	else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)
	{return 4;}//÷
	else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0)
	{return 5;}//=
	else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)==0)
	{return 6;}//选定数字
	return 0;
}
void Key_Tick(void)
{
	static uint8_t Count;
	static uint8_t CurrState, PrevState;
	
	Count ++;
	if (Count >= 20)
	{
		Count = 0;
		
		PrevState = CurrState;
		CurrState = Key_GetState();
		
		if (CurrState == 0 && PrevState != 0)					//仿真能执行到
		{														
			Key_Num = PrevState;								//仿真执行不到这
		}
	}
}

